#include "c_to_zig.h"
#define _POSIX_C_SOURCE 200809L
#include <string.h>
#include <stdlib.h>

// 简单的加法函数
int add_numbers(int a, int b) {
    return a + b;
}

// 返回问候消息
const char* get_hello_message() {
    return "Hello from C code!";
}

// 计算字符串中的单词数（BusyBox风格的简单工具函数）
size_t count_words(const char* str) {
    if (!str || *str == '\0') {
        return 0;
    }
    
    size_t count = 0;
    int in_word = 0;
    
    while (*str) {
        if (*str == ' ' || *str == '\t' || *str == '\n') {
            in_word = 0;
        } else if (!in_word) {
            in_word = 1;
            count++;
        }
        str++;
    }
    
    return count;
}

// 反转字符串（BusyBox风格的简单工具函数）
void reverse_string(char* str) {
    if (!str) return;
    
    size_t len = strlen(str);
    size_t i, j;
    
    for (i = 0, j = len - 1; i < j; i++, j--) {
        char temp = str[i];
        str[i] = str[j];
        str[j] = temp;
    }
}

// 使用回调执行操作
void perform_operation_with_callback(int a, int b, ZigCallback callback) {
    if (callback) {
        int result = a * b; // 执行一个简单操作
        callback(result);   // 调用Zig提供的回调函数
    }
}